In some shared environments, such as cloud infrastructures, resource utilization (e.g., CPU, memory disk input/output (I/O), network, etc.) may vary significantly and in an indeterminate manner since the mix of applications and their resource utilization may not be known beforehand. Furthermore, applications that are time dependent, such as applications that may sleep for some period of time while waiting for a condition to be met, may fail in an environment where insufficient resources may be available to allow the task to complete or the condition to have been met.
One current solution may be to avoid time dependencies. As such, instead of the application waiting for an elapsed period of time, the application may wait for some sort of trigger or event such as a signal. However, such a solution may not always be possible since other signaling mechanisms may not be available or applicable. Furthermore, some form of time-out may still be required even when employing other signaling mechanisms. Another solution may be to extend the wait periods to factor in all likely high-demand periods. However, this solution may require sufficient historical data to make this determination and may fail if an even higher demand period is experienced.